package com.xjscrm.common.utils;

import java.lang.reflect.Field;
import java.util.Map;

/**
 * 对象，map转换工具
 */
public class MapObjExchangeuUtils {

    /**
     * 对象转map
     * @param map
     * @param object
     * @return
     */
    public  static Map objToMap(Map map,Object object){
     try {
         //通过反射获取对象字段和值
         Field[] fields= object.getClass().getDeclaredFields();
         for (Field field: fields) {
             field.setAccessible(true);//取消语言访问检查
             map.put(field.getName(), field.get(object));//获取私有变量值
         }
         //通过反射获取父类字段和值
         if(object.getClass().getSuperclass()!=null){
             Field[] superFields= object.getClass().getSuperclass().getDeclaredFields();
             for (Field sFoelds: superFields) {
                 sFoelds.setAccessible(true);//取消语言访问检查
                 map.put(sFoelds.getName(), sFoelds.get(object));//获取私有变量值
             }
         }
     }catch (Exception e){
         e.printStackTrace();
     }
        return map;
    }

    /**
     * map转对象
     * @param map
     * @param object
     * @return
     */
    public  static  Object mapToObj(Map map,Object object){
        Object o=new Object();
       try {
           Field[] fields = object.getClass().getDeclaredFields();
            o = object.getClass().newInstance();
           for(Field field:fields){
               Object val;
               if((val=map.get(field.getName()))!=null){
                   field.setAccessible(true);
                   field.set(o,val);
               }
           }

       }catch (Exception e){
           e.printStackTrace();
       }
        return  o;
    }

}
